import java.util.Arrays;
import java.util.Random;

/**
 * 一维数组
 * 1.定义：
 *      （1） 类型[]  数组名=new 类型[大小];
 *      （2） 类型  数组名[]=new 类型[大小];
 * 2.数组元素引用：数组名[下标]
 *      下标的下限为0   上限为数组的大小-1
 */
public class Array1 {
    public static void main(String[] args){
        int[] a=new int[5];
        String b[]=new String[10];//定义数组
        setRandom(a);
        out(a);//调用out函数输出
        out(b);
        int f[]=new int[20];
        fb(f);
        out(f);
        int j[]=new int[5];//定义数组
        setRandom(j);//给j赋随机值
        out(j);//输出j数组
        insert(j,30,2);//在j数组的下标为2的位置插入30
        //j=insert(j,30,2);
        out(j);//输出j的数组
        delete(j,2);out(j);//这有一个问题：删除一个元素后，Java会自动重赋值最后的元素，数组大小没变
        j=delete(j,2);out(j);
        j=delete(j,3);out(j);

    }
    //给数组赋值：
    static void setRandom(int[] x){
        Random r=new Random();
        //Random不要自己打出来，它是一个类 要在一个包里，看顶头，要是自己手打是没有那一行的,需要Alt+Enter回车调用
        for (int i=0;i<x.length;i++){
            x[i]=r.nextInt(100);
        }
    }

//斐波那契数列 显示：
   static void fb (int[] x){
        x[0]=1;
        x[1]=1;
        for (int i=2;i<= x.length-1;i++){
            x[i]=x[i-1]+x[i-2];
        }
  }

  //在数组中插入一个元素：
    static void insert(int[] a,int x,int pos){
       for (int j=a.length-1;j>pos;j--){
           a[j]=a[j-1];
       }
       a[pos]=x;
    }
    //
    /*static int[] insert(int[] a,int x,int pos){
        int[] t=new int[a.length+1];
        for (int i=0;i<a.length;i++){
            t[i]=a[i];
        }
        for (int j=t.length-1;j>pos;j--){
            t[j]=t[j-1];
        }
        t[pos]=x;
        return t;
    }*/
    //在数组中插删除一个元素：
    static int[] delete(int[] x,int pos){
        for (int i=pos;i<x.length-1;i++){
            x[i]=x[i+1];
        }
        return Arrays.copyOf(x,x.length-1);
    }


    //输出刚开始定义的两个数组的结果（观察用的）
    static void out(int[] x){  //overload 重载   不同类型的数组用同一个out输出
        for(int e: x){
            System.out.print(e+"  ");
        }
        System.out.println();
    }
    static void out(String[] x){
        for(String e: x){
            System.out.print(e+"  ");
        }
        /*for(int i=0;i<x.length;i++){
            System.out.print(int[i]+"   ");
        }*/
        System.out.println();
    }
}

